An autonomous computing model revolves around the interactions between networked computers that can intelligently distribute their workload between computers. Data storage and processing capabilities are distributed over a network in a distributed computing environment. The machines in a distributed system may have different hardware architectures and operating systems.
Distributed systems are based on intelligent components that are capable of self-governing actions in dynamic and heterogeneous environments. These distributed systems make the environment autonomous and intelligent, and can reduce user interaction. Many distributed computing architectures involve “lightweight” software agents installed on a number of client systems, and one or more dedicated distributed computing management servers. The servers take distributed computing requests, and divide their large processing tasks into smaller tasks that can run on individual desktop computer systems.
As an example, an agent running on a client computer system may detect when the system is idle, notify a management server that the system is available for processing, and request an application package. The client system then receives the requested application package from the server, and runs the application package when spare processor cycles are available. The client system sends the results back to the server.
This example is further illustrated by a sequence diagram, represented in FIG. 10, which relates to a generic monitoring agent in a distributed computing environment. A client daemon that runs continuously on the client system for processing requests receives a request to monitor a resource. A monitoring agent on the client system initializes its various components, such as scheduler and evaluator objects.
The monitoring agent notifies its scheduler object of a timeout value. The monitoring application also notifies the evaluator object of the task and algorithm to be applied to the data collected by the scheduler object. The scheduler object collects data from the system by invoking appropriate interfaces or system calls provided by the operating system. When the server requests a status of a resource, the monitoring agent sends an evaluate request to the evaluator object, and then the evaluator object asks the scheduler object for metrics to apply the algorithm. The processed data is then returned to the server.
Table 1 below describes, in outline, steps of FIG. 10.
TABLE 1Step 1001A client daemon sends the monitoring agent with a requestrelating to a resource to be monitored.Step 1002The monitoring agent sends the resource details to thescheduler object.Step 1003A timeout for the scheduler object is set for this particularresource.Step 1004The scheduler object registers itself to a timer.Step 1005With every timeout, the scheduler object gets the status ofthe resource by invoking a suitable executable.Step 1006The executable makes a system call to operating system.Steps 1007Operating system fetches the status of the particularand 1008resource. This information is stored by the scheduler objectfor each timeout.Step 1009When a request comes from the server, the client daemonagain communicates with the monitoring agent.Step 1010The evaluator object is invoked with the required algorithmto be performed on the resource data.Step 1011The evaluator object collects the matrix information fromthe scheduler object.Step 1012The evaluator object executes the algorithm on the data andsends the results to monitoring agent to be finally send toserver.
A need for an improved manner of monitoring distributed resources clearly exists in view of the observations made above.